草庐IT

C++ CreateWindowEx 返回 NULL

全部标签

c++ - 在 ATL 项目中将 NULL 指针传递给进程外 COM 方法的正确方法

在ATL项目中将NULL指针传递给进程外COM方法的正确方法是什么?我创建了一个通过COM代理托管的COM服务器如果这很重要,我使用的是在Win7上运行的VS2012。服务器项目编译为64位,客户端项目编译为32位IDL看起来类似于下面import"oaidl.idl";import"ocidl.idl";[object,uuid(37EFA952-7036-4398-93A6-6CDAD9DFC005),dual,nonextensible,pointer_default(unique)]interfaceIGame:IDispatch{[id(1)]HRESULTpassNull(

windows - GetProcAddress 不返回 LoadLibraryA 的真实地址

DWORDdwLoadLibrary=(DWORD)GetProcAddress(GetModuleHandleA("kernel32.dll"),"LoadLibraryA");当我转到OllyDbg中的返回地址时,我可以看到该地址指向跳转到LoadLibraryA的真实地址的代码。我想获得LoadLibraryA的真实地址,它不会改变,因为kernel32.dll在每个进程中的相同位置加载,而且我想知道为什么GetProcAddress不返回真实地址。 最佳答案 您正在获取kernel32.LoadLibraryA的“真实”地址

C++ 函数为无法调用 SysFreeString() 的函数返回 BSTR

请耐心等待,我作为C++程序员已经有一段时间了。我需要知道我是否做错了。它有效,但我怀疑它会导致内存泄漏。我有这个功能:_bstr_tWCH2BSTR(wchar_t*st){BSTRstres=SysAllocString(st);return(_bstr_t)stres;}假设我要使用这样的结果:wcout这会导致内存泄漏,还是BSTR会被Java中的“垃圾收集器”删除?如果是内存泄漏,我怎样才能在不失去作为单行程序的能力的情况下防止它发生?有时WCH2BSTR的结果存储在BSTR变量中并正确处理,但我想使用相同的函数以单行方式将wchar_t连接到BSTR。谢谢。

c++ - 如果 HWND 错误,则 MessageBox 返回 0

有没有MessageBox除了内存不够还可以返回0的情况?我有一个案例,我怀疑我传递给MessageBox的HWND无效或者它可能属于一个正在被销毁的窗口。在我的例子中,MessageBox没有显示并返回0,但我似乎有足够的可用内存。 最佳答案 IsthereacasewhereMessageBoxcanreturn0otherthannotenoughmemory?来自MSDN文档:http://msdn.microsoft.com/en-us/library/ms645505%28VS.85%29.aspxIfthefuncti

c - SHGetFolderPath 无论如何都会返回 "C"?

我是Windows开发的新手(在Mac方面有经验),我正在尝试使用SHGetFolderPath(因为它与WindowsXP兼容)来获取当前用户的应用程序数据文件夹的路径。然而,无论我传入什么标志,我每次都会得到“C”的输出路径。我都试过了:CSIDL_APPDATA和CSIDL_LOCAL_APPDATA有和没有CSIDL_FLAG_CREATE标志。每次结果相同:“C”。我在这里做错了什么?#include#include//SHGetFolderPath#include#include//#pragmacomment(lib,"shell32.lib")intmain(){CHA

c++ - 为什么 _localtime32 和 _gmtime32 对于非 GMT 时区返回相同的时间值?

我的时区在控制面板日期/时间小程序中设置为CDT。以下代码将完全相同的日期和时间放入pCurGmtTime和pCurTime:intmain(intargc,char*argv[]){__time32_tt=_time32(NULL);tm*pCurGmtTime=_gmtime32(&t);tm*pCurTime=_localtime32(&t);//Thevaluesinthe*pCurGmtTimestructureareequaltothevaluesin*pCurTimereturn0;}我没有设置TZ环境变量,但我的时区已通过控制面板日期和时间小程序为系统正确配置。这种行为

c++ - 为什么 select() 返回 1 而 recv() 返回 0?

我可以清楚地看到recvbuf拥有我期望的所有数据,但select()一直返回1。现在它陷入了elseif(iBuffer==0){}的困境。SOCKETm_ConnectSocket;/*ThesocketsetupisdoneelsewherebutjustaddingthisforclarityThissocketisresponsibleforsendingfromtheclienttotheserverandalsoreceivesanythingtheserversendsback.Thissocketisdoingtheconnect()&initialsend()*/f

windows - 如何获取使用 START 命令启动的批处理文件的返回/退出代码?

我正在尝试使用start/high运行批处理文件,但仍会获得返回/退出代码,即%ERRORLEVEL%。问题似乎是命令START没有返回批处理文件返回的退出代码。我们有一个用于测试的简单批处理文件,名为BatFileThatReturnsOne.bat。BatFileThatReturnsOne.bat的内容是EXIT/B1我们这样调用它:start/high/waitBatFileThatReturnsOne.bat但无论批处理文件返回什么,start的执行都不会出现%ERRORLEVEL%0(零)以外的任何值。这实际上都是由CloudFormation中的cfn-init调用的,但

c++ - 我可以从对话框的 DoModal 函数返回自定义值吗?

我想做的是,在使用DoModal()创建一个对话框并在框中按OK退出它之后,返回一个自定义值。例如,用户将在对话框中输入的几个字符串。 最佳答案 您不能更改DoModal()函数的返回值,即使可以,我也不推荐这样做。这不是执行此操作的惯用方式,如果您将其返回值更改为字符串类型,您将无法看到用户何时取消对话框(在这种情况下,返回的字符串值应该完全忽略)。相反,向对话框类添加另一个(或多个)函数,例如GetUserName()和GetUserPassword,然后在DoModal返回IDOK。例如,显示对话框和处理用户输入的函数可能如下

c# - GetWindowRect 在一个应用程序上返回错误值,所有其他应用程序都是正确的

我使用WindowsAPI中的GetWindowRect来获取正在运行的应用程序的边界,然后使用这些边界来截取应用程序。我的代码适用于我测试过的大约10个程序,notepad.exe和其他一些程序,但是我想将它与RocLink800一起使用的一个应用程序返回不正确的静态值,无论应用程序位置如何。代码是C#.NET[StructLayout(LayoutKind.Sequential)]publicstructRECT{publicintX;publicintY;publicintWidth;publicintHeight;}[DllImport("user32.dll",SetLast